home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_weap_simonov.cog < prev    next >
Text File  |  1999-11-15  |  5KB  |  230 lines

  1. # Jones 3D Cog Script
  2. #
  3. # weap_Simonov.cog
  4. #
  5. # This COG controls the Simonov SKS Automatic Rifle.
  6. #
  7. # [RandyT]
  8. #
  9. # (C) 1998 LucasArts Entertainment Company LLC. All Rights Reserved
  10. #
  11. # ===================================================================
  12.  
  13. symbols
  14.  
  15. message        startup
  16. message        fire
  17. message        aim
  18. message        activated
  19. message        deactivated
  20. message        selected
  21. message        deselected
  22. message        callback
  23.  
  24. sound        bang=gen_simonov_fire.wav    local    # Autoloaded
  25. sound        pull=gen_rifle_pull.wav        local    # Autoloaded
  26. sound        put=gen_rifle_put.wav        local    # Autoloaded
  27.  
  28. template    projectile=+simonov            local    # Autoloaded
  29. template    smoke1=+pistol_smoke1        local    # Autoloaded
  30. template    smoke2=+pistol_smoke2        local    # Autoloaded
  31.  
  32. thing        player                        local
  33. thing        bullet                        local
  34.  
  35. flex        aimFOV=10.0                    local
  36. flex        aimMax=90.0                    local
  37. flex        aimWait=0.3                    local
  38. flex        fireWait=1.0                local
  39.  
  40. int            handNode                    local
  41. int            holsterMesh                    local
  42. int            weaponNum=6                    local
  43. int            callNum                        local
  44.  
  45. int            bActivated=0                local
  46.  
  47. vector        firePos                        local
  48.  
  49. end
  50.  
  51. # ===================================================================
  52.  
  53. code
  54.  
  55. startup:
  56.  
  57.     player = GetLocalPlayerThing();
  58.     handNode = GetNodeByName(player, "inrhand");
  59.     holsterMesh = GetMeshByName(player, "intorso");
  60.  
  61.     if (IsThingModelName(player, "gen_in_shirt.3do"))
  62.     {
  63.         LoadHolsterModel(weaponNum, "torso_shirt_simonov.3do");
  64.     }
  65.     else if (IsThingModelName(player, "gen_in.3do"))
  66.     {
  67.         LoadHolsterModel(weaponNum, "torso_in_simonov.3do");
  68.     }
  69.     else
  70.     {
  71.         LoadHolsterModel(weaponNum, "torso_guy_simonov.3do");
  72.     }
  73.  
  74.     if (GetLastRifle(player) == weaponNum)
  75.     {
  76.         SetHolsterModel(player, weaponNum, holsterMesh);
  77.     }
  78.     
  79.     if (GetSenderRef() == 9999) # Call is from Guybrush cheat...
  80.     {
  81.         if (GetCurWeapon(player) == weaponNum)
  82.         {
  83.             ResetHolsterModel(player, 3);
  84.         }
  85.     }
  86.  
  87.     return;
  88.  
  89. # -------------------------------------------------------------------
  90.  
  91. fire:
  92.  
  93.     # Make sure Indy's not out of ammo
  94.     if (GetInv(player, weaponNum) < 1)
  95.     {
  96.         PlayVoiceMode(player, 123);
  97.         SelectWeapon(player, 3);
  98.         return;
  99.     }
  100.  
  101.     # Fire away...
  102.     firePos = GetThingJointPos(player, handNode);
  103.     bullet = FireProjectile(player, projectile, bang, 65, firePos, '-1.6 41.5 0.0', 1.0, 0x320, aimFOV, aimMax);
  104.  
  105.     if (Rand() < 0.5) CreateThing(smoke1, bullet);
  106.     else CreateThing(smoke2, bullet);
  107.  
  108.     ChangeInv(player, weaponNum, -1.0);
  109.     SetFireWait(player, fireWait);
  110.  
  111.     return;
  112.  
  113. # -------------------------------------------------------------------
  114.  
  115. aim:
  116.  
  117.     if (GetParam(0))
  118.     {
  119.         if (!IsAiming(player) && !bActivated)
  120.         {
  121.             while ((PlayMode(player, 63, 0) == -99) && (!bActivated))
  122.             {
  123.                 Sleep(0.01);
  124.             }
  125.         }
  126.     }
  127.     else if (IsModePlaying(player, 63) && !bActivated)
  128.     {
  129.         SetAimWait(player, aimWait);
  130.         StopMode(player, 63, aimWait);
  131.         PlayMode(player, 68, 0);
  132.     }
  133.  
  134.     return;    
  135.  
  136. # -------------------------------------------------------------------
  137.  
  138. activated:
  139.  
  140.     bActivated = 1;
  141.     SetAimWait(player, aimWait);
  142.  
  143.     if (!IsAiming(player))
  144.     {
  145.         while (PlayMode(player, 63, 0) == -99)
  146.         {
  147.             Sleep(0.01);
  148.         }
  149.     }
  150.     
  151.     ActivateWeapon(player, aimWait);
  152.  
  153.     return;
  154.  
  155. # -------------------------------------------------------------------
  156.  
  157. deactivated:
  158.  
  159.     bActivated = 0;
  160.  
  161.     if (!IsAiming(player))
  162.     {
  163.         SetAimWait(player, aimWait);
  164.         StopMode(player, 63, aimWait);
  165.         PlayMode(player, 68, 0);
  166.     }
  167.  
  168.     DeactivateWeapon(player);
  169.  
  170.     return;
  171.  
  172. # -------------------------------------------------------------------
  173.  
  174. selected:
  175.  
  176.     SetMountWait(player, 0.8);
  177.  
  178.     SetArmedMode(player, 3);
  179.     SetCurWeapon(player, weaponNum);
  180.     SetThingFireOffset(player, '-0.048 0.048 0.015'); 
  181.  
  182.     CaptureThing(player);
  183.     PlayMode(player, 62, 0);
  184.  
  185.     return;
  186.  
  187. # -------------------------------------------------------------------
  188.  
  189. deselected:
  190.  
  191.     if (IsAiming(player))
  192.     {
  193.         SetAimWait(player, aimWait);
  194.         StopMode(player, 63, aimWait);
  195.     }
  196.  
  197.     SetMountWait(player, 1.0);
  198.  
  199.     StopMode(player, 62, 0);
  200.  
  201.     CaptureThing(player);
  202.     PlayMode(player, 64, 0);
  203.  
  204.     SetArmedMode(player, 0);
  205.  
  206.     return;
  207.  
  208. # -------------------------------------------------------------------
  209.  
  210. callback:
  211.  
  212.     callNum = GetParam(1);
  213.     ReleaseThing(player);
  214.  
  215.     if (callNum == 28)
  216.     {
  217.         PlaySoundThing(pull, player, 1, -1, -1, 0x880);
  218.         ResetHolsterModel(player, 3);
  219.         SetWeaponModel(player, weaponNum);
  220.     }
  221.     else if (callNum == 29)
  222.     {
  223.         PlaySoundThing(put, player, 1, -1, -1, 0x880);
  224.         SetHolsterModel(player, weaponNum, holsterMesh);
  225.         ResetWeaponModel(player);
  226.     }
  227.  
  228.     return;
  229.  
  230. end